package com.photography.controller;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.photography.annotation.RequireRole;
import com.photography.common.Result;
import com.photography.entity.User;
import com.photography.service.UserService;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.*;



@RestController
@RequestMapping("/user")
public class UserController {
    @Resource
    private UserService userService;

    /**
     * 用户登录
     */
    @PostMapping("/login")
    public Result login(@RequestParam String account, @RequestParam String password) {
        return userService.login(account, password);
    }


    /**
     * 用户注册
     */
    @PostMapping("/register")
    public Result register(@RequestBody User user) {
        return userService.register(user);
    }

    /**
     * 删除用户
     *
     * @param userId 用户id
     * @return 结果
     */
    @RequireRole("manager")
    @DeleteMapping("/delete/{userId}")
    public Result deleteUser(@PathVariable Integer userId) {
        return userService.deleteUser(userId);
    }

    /**
     * 更新用户信息
     *
     * @param user 用户信息
     * @return 结果
     */
    @PutMapping("/update")
    public Result updateUser(@RequestBody User user) {
        return userService.updateUser(user);
    }

    /**
     * 分页查询用户列表
     *
     * @param current 当前页码
     * @param size    每页大小
     *                //     * @param name 用户名（可选）
     *                //     * @param email 邮箱（可选）
     *                //     * @param phoneNumber 手机号（可选）
     *                //     * @param nickname 昵称（可选）
     * @param gender  性别（可选）
     * @return 分页结果
     */
    @RequireRole("manager")
    @GetMapping("/page")
    public Result getUserPage(@RequestParam(defaultValue = "1") Integer current,
                              @RequestParam(defaultValue = "10") Integer size,
                              @RequestParam(required = false) String gender,
                              @RequestParam(required = false) String userLevel,
                              @RequestParam(required = false) String search) {
        // 创建分页对象
        Page<User> page = new Page<>(current, size);
        // 执行分页查询
        Page<User> userPage = userService.getUserPage(page, gender,userLevel,search);
        return Result.success(userPage, "查询成功");
    }

    /**
     * 模糊搜索用户
     *
     * @param current 当前页码
     * @param size    每页大小
     * @param keyword 搜索关键词，支持用户名、邮箱、手机号、昵称、性别的模糊匹配
     * @return 分页结果
     */
    @RequireRole("manager")
    @GetMapping("/search")
    public Result search(@RequestParam(defaultValue = "1") Integer current,
                         @RequestParam(defaultValue = "10") Integer size,
                         @RequestParam(required = false) String keyword) {
        // 创建分页对象
        Page<User> page = new Page<>(current, size);
        // 执行分页查询
        Page<User> userPage = userService.search(page, keyword);
        return Result.success(userPage, "搜索成功");
    }

}
